package com.example.身高体重排序;

import java.util.*;

/**
 * @Author: 唐佳辉
 * @CreateTime： 2024-06-14-下午2:16
 * @Description: 题目描述
 * 某学校举行运动会,学生们按编号(1、2、3.....n) 进行标识,
 * <p>
 * 现需要按照身高由低到高排列，对身高相同的人，按体重由轻到重排列，对于身高体重都相同的人，维持原有的编号顺序关系。
 * <p>
 * 请输出排列后的学生编号
 * <p>
 * 输入描述
 * 两个序列，每个序列由 n 个正整数组成(0 < n < 100)。第一个序列中的数值代表身高，第二个序列中的数值代表体重。
 * <p>
 * 输出描述
 * 排列结果，每个数值都是原始序列中的学生编号，编号从 1 开始
 * @Version：1.0
 */
public class Main {
    public static void main(String[] args) {
        type2() ;
    }

    public static void type1() {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] h = new int[n];
        int[] w = new int[n];
        int[] idx = new int[n];
        for (int i = 0; i < n; i++) {
            h[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            w[i] = scanner.nextInt();
            idx[i] = i + 1;
        }

        int[][] lst = new int[n][3];
        for (int i = 0; i < n; i++) {
            lst[i][0] = h[i];
            lst[i][1] = w[i];
            lst[i][2] = idx[i];
        }

        Arrays.sort(lst, Comparator.comparingInt((int[] a) -> a[0]).thenComparingInt((int[] a) -> a[1]).thenComparingInt((int[] a) -> a[2]));

        StringBuilder result = new StringBuilder();
        for (int i = 0; i < n; i++) {
            result.append(lst[i][2]);
        }
        System.out.println(result);
    }

    public static void type2() {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        PriorityQueue<int[]> heap = new PriorityQueue<>(Comparator.comparingInt((int[] a) -> a[0]).thenComparingInt((int[] a) -> a[1]).thenComparingInt((int[] a) -> a[2])); // Max heap

        for (int i = 0; i < n; i++) {
            heap.add(new int[]{scanner.nextInt(), scanner.nextInt(), i + 1});
        }
        while (!heap.isEmpty()) {
            System.out.print(heap.poll()[2] + " ");
        }



    }

}
